package com.example.crawler.utils;

import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtils {

    /**
     * 判断字符串是否为空，如果不是String类型，则返回false
     * @param obj
     * @return
     */
    public static boolean isEmptyOfStr(Object obj) {
        if (obj == null) {
            return true;
        }
        if (obj instanceof String) {
            if (org.springframework.util.StringUtils.isEmpty(obj.toString().trim())) {
                return true;
            }
        }
        return false;
    }
    public static String changeStr(String str){
        String newstr = "";
        newstr = str.replaceAll("<[.[^>]]*>","").replaceAll(" ", "");
        return newstr;
    }

    /**
     * 判断一个字符串是否含有数字
     * @param content
     * @return
     */
    public boolean HasDigit(String content) {
        boolean flag = false;
        Pattern p = Pattern.compile(".*\\d+.*");
        Matcher m = p.matcher(content);
        if (m.matches()) {
            flag = true;
        }
        return flag;
    }

    /**
     * 截取第一次出现的连续数字
     * @param content
     * @return
     */
    public static String getNumbers(String content) {
        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            return matcher.group(0);
        }
        return "";
    }

    /**
     * 截取第一次出现的连续非数字
     * @param content
     * @return
     */
    public static String splitNotNumber(String content) {
        Pattern pattern = Pattern.compile("\\D+");
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            return matcher.group(0);
        }
        return "";
    }

    /**
     * 换算单位，换算币种
     * @param money
     * @return
     */
    public static BigDecimal convert(String money) {
        // 获取 金额数字
        String digit = StringUtils.getNumbers(money);
        // 只使用有数字的数据，过滤掉（未披露、近亿人民币、千万级人民币等虚数数据）
        if (StringUtils.isEmptyOfStr(digit)) {
            return null;
        }
        // 获取 单位和币种
        String notDigit = StringUtils.splitNotNumber(money);
        // 1580万美元、1200万人民币、4.05亿人民币
        BigDecimal bigDecimal = new BigDecimal(digit);
        if (notDigit.contains("万")) {
            bigDecimal = bigDecimal.multiply(new BigDecimal(10000));
        } else if (notDigit.contains("亿")) {
            bigDecimal = bigDecimal.multiply(new BigDecimal(100000000));
        }
        // 乘以汇率，转换为人民币
        if (notDigit.contains("美元")) {
            bigDecimal = bigDecimal.multiply(new BigDecimal(6.7));
        }
        return bigDecimal;
    }

    public static void main(String[] args) {
        Object onj = " ";
        System.out.println(StringUtils.isEmptyOfStr(onj));
    }

}
